package com.headwind.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.headwind.dao.HwUserBlogDao;
import com.headwind.entity.HwUserBlog;
import com.headwind.service.HwUserBlogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author : Headwind
 * @version : 1.0
 * @date : Created in 2020/8/27
 * @description : 用户博客访业务实现类
 */
@Service
public class HwUserBlogServiceImpl implements HwUserBlogService {
    private final HwUserBlogDao userBlogDao;

    @Autowired
    public HwUserBlogServiceImpl(HwUserBlogDao blogDao) {
        this.userBlogDao = blogDao;
    }

    /**
     * 保存用户博客
     *
     * @param userBlog 用户博客实体
     * @return 保存成功 {@code true} 保存失败 {@code false}
     */
    @Override
    public Boolean save(HwUserBlog userBlog) {
        userBlog.setPublishTime(DateUtil.date());
        return userBlogDao.insert(userBlog) > 0;
    }

    /**
     * 删除用户博客
     *
     * @param id 主键id
     * @return 删除成功 {@code true} 删除失败 {@code false}
     */
    @Override
    public Boolean delete(Long id) {
        return userBlogDao.delete(id) > 0;
    }

    /**
     * 更新用户博客
     *
     * @param userBlog 用户博客实体
     * @param id       主键id
     * @return 更新成功 {@code true} 更新失败 {@code false}
     */
    @Override
    public Boolean update(HwUserBlog userBlog, Long id) {
        HwUserBlog exist = getUserBlog(id);
        BeanUtil.copyProperties(userBlog, exist, CopyOptions.create().setIgnoreNullValue(true));
        exist.setPublishTime(new DateTime());
        return userBlogDao.update(exist, id) > 0;
    }

    /**
     * 获取单个用户博客
     *
     * @param id 主键id
     * @return 单个用户对象博客
     */
    @Override
    public HwUserBlog getUserBlog(Long id) {
        return userBlogDao.findOneById(id);
    }

    /**
     * 获取用户博客列表
     *
     * @param userBlog 用户博客实体
     * @return 用户列表
     */
    @Override
    public List<HwUserBlog> getUserBlog(HwUserBlog userBlog) {
        return userBlogDao.findByExample(userBlog);
    }
}
